/*
 * 长委水位、流量、雨量数值格式化js
 * @author wd
 * @date 2016年3月2日
 */

/**
 * 格式化水位
 * @param x
 * @return
 */
function Hformat(x) {
  x = parseFloat(x);
  if (x === 0) return '0';
  if (!x || isNaN(x)) return '-';
  //let rv = x.toFixed(2);
  const s = Math.round(x * 100);
  return (s / 100).toFixed(2);
}

// 格式化数组水位
const HArrayFormat = (data) => {
  if (data.length === 0) return [];
  const arrData: any = [];
  for (let i = 0; i < data.length; i++) {
    arrData.push(Hformat(data[i]));
  }
  return arrData;
};

/**
 * 格式化流量
 * @param x
 * @return
 */
function Qformat(x) {
  // 修改流量值是出现数据被误认为是字符串，故在此强制将数据转换为float
  x = parseFloat(x);
  if (x === 0) return '0';
  if (x < 0) {
    //如果为负数，递归调用该方法，参数*-1，返回时再加上'-'
    return '-' + Qformat(x * -1);
  }
  if (!x || isNaN(x)) return '-';
  let ttx: any = null;
  let tx = 0;
  if (x >= 100000) {
    tx = Math.floor(x / 1000 + 0.5);
    tx *= 1000;
    //decimalFormat = new DecimalFormat("###");
    ttx = tx.toFixed(0);
  } else if (x >= 10000) {
    tx = Math.floor(x / 100 + 0.5);
    tx *= 100;
    //decimalFormat = new DecimalFormat("###");
    ttx = tx.toFixed(0);
  } else if (x >= 1000) {
    tx = Math.floor(x / 10 + 0.5);
    tx *= 10;
    //decimalFormat = new DecimalFormat("###");
    ttx = tx.toFixed(0);
  } else if (x >= 100) {
    tx = Math.floor(x + 0.5);
    //decimalFormat = new DecimalFormat("###");
    ttx = tx.toFixed(0);
  } else if (x >= 10) {
    tx = Math.floor(x * 10 + 0.5);
    tx /= 10;
    //decimalFormat = new DecimalFormat("###.#");
    ttx = tx.toFixed(1);
  } else if (x >= 0) {
    tx = Math.floor(x * 100 + 0.5);
    tx /= 100;
    //decimalFormat = new DecimalFormat("###.##");
    ttx = tx.toFixed(2);
  } else if (x >= 0.1) {
    tx = Math.floor(x * 1000 + 0.5);
    tx /= 1000;
    //decimalFormat = new DecimalFormat("###.###");
    ttx = tx.toFixed(3);
  } else {
    tx = Math.floor(x * 10000 + 0.5);
    tx /= 10000;
    //decimalFormat = new DecimalFormat("###.####");
    ttx = tx.toFixed(4);
  }
  return ttx == 0 ? 0 : ttx;
}

/**
 * 格式化雨量
 * @param x
 * @return
 */
function Pformat(x) {
  if (x === 0) return '0';
  if (!x || isNaN(x)) return '-';
  //  let rv = x.toFixed(1);
  //  return  rv == 0 ? '0' : rv;
  const s = Math.round(x * 10);
  const v = (s / 10).toFixed(1);
  return v == '0.0' ? '0' : v;
}

export { Hformat, Qformat, Pformat, HArrayFormat };
